package com.cw.mapper;

import com.cw.dto.PageDto;
import com.cw.dto.UserDeptPostPojo;
import com.cw.entity.UserDeptPost;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户、部门、职务 Mapper 接口
 * </p>
 *
 * @author smq
 * @since 2021-04-28
 */
public interface UserDeptPostMapper extends BaseMapper<UserDeptPost> {
    int insertList(List<UserDeptPost> list);

    List<UserDeptPostPojo> selectAll(@Param("uId") String uId, @Param("dId") String dId, @Param("pId") String pId);

    /**
     * 根据用户Id查询所属部门名称
     * @param userId
     * @return
     */
    List<String> getDepsName(String userId);

    /**
     * 根据用户账号姓名查询部门编号（模糊查询）
     * @param userName
     * @return
     */
    List<Integer> getDepIdByUserName(@Param("userName") String userName);

    /**
     * 删除用户对应的部门职位信息
     * @param userId
     * @return
     */
    int deleteUserDeptPost(@Param("userId") String userId,@Param("deptId") String deptId);

    /**
     * 根据部门Id和用户id数组 批量删除用户对应的部门职位信息
     */
    int deleteUserDeptPostByList(@Param("list") List<String> list,@Param("deptId") String deptId);

    /**
     * 功能描述: <br>
     * 〈添加不同科室下不同的医生〉
     *
     * @Param: [deptId:部门id, userId:医生id]
     * @Return: int
     * @Author: wzw
     * @Date: 2019/11/7 11:29
     */


    int insertDeptAndUser(@Param("id") String id, @Param("deptId") String deptId, @Param("userId") String userId);

    /**
     * 功能描述: <br>
     * 〈通过科室id获得有无负责人以及是谁〉
     *
     * @Param: [deptId]
     * @Return: 没有或者是谁
     * @Author: wzw
     * @Date: 2019/11/8 11:31
     */
    Integer getPersonInCharge(@Param("deptId") String deptId);

    /**
     * 功能描述: <br>
     * 〈取消部门负责人〉
     *
     * @Param: [deptId]
     * @Return: java.lang.Integer
     * @Author: wzw
     * @Date: 2019/11/8 11:40
     */
    Integer updatePersonInCharge(@Param("deptId") String deptId);

    /**
     * 功能描述: <br>
     * 〈更改部门负责人〉
     *
     * @Param: [deptId, userId]
     * @Return: java.lang.Integer
     * @Author: wzw
     * @Date: 2019/11/8 11:55
     */
    Integer addPersonInCharge(@Param("deptId") String deptId, @Param("userId") String userId);


    /**
     * 功能描述: <br>
     * 〈〉
     *
     * @Param:
     * @Return:
     * @Author: wzw
     * @Date: 2019/11/8 10:13
     */

    int insertRoleAndUser(@Param("id") String id, @Param("deptId") String deptId, @Param("userId") String userId);



    /**
     * 功能描述: <br>
     * 〈〉
     *
     * @Param: [searchCondition]
     * @Return: java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Author: wzw
     * @Date: 2019/11/15 14:34
     */
    List<Map<String, Object>> getDeptInfo(@Param("pageDto") PageDto pageDto);

    /**
     * 查询部门的总人数
     * @param list
     * @return
     */
    int getPersonsInDept(List<String> list);

    /**
     * 根据部门集合查询部门所有用户信息
     * @param list
     * @return
     */
    List<Map<String,Object>> getDeptUserByDepts(List<String> list);
}
